/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.assembler.input;

import java.util.Iterator;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.client.om.IAdresse;
import fr.generali.accueilclient.client.om.IContratsAdresse;
import fr.generali.accueilclient.client.om.IPersonne;
import fr.generali.accueilclient.contrat.om.IConsultContrat;
import fr.generali.refservcommuns.rce.majliens.MajLiensClientsAdrRib;
import fr.generali.refservcommuns.rce.majliens.racine.DtoDossierAdresse;
import fr.generali.refservcommuns.rce.majliens.racine.DtoListeAdresses;
import fr.generali.refservcommuns.rce.majliens.racine.DtoListeDossierS22;
import fr.generali.refservcommuns.rce.majliens.racine.DtoNumeroContrat;

/**
 * @author selrhazala
 */
@Component("contratsAdresseToMajLiensClientsAdrRibConverter")
public class ContratsAdresseToMajLiensClientsAdrRibConverter implements
                Converter<IContratsAdresse, MajLiensClientsAdrRib> {

    /**
     * {@inheritDoc}
     */
    public MajLiensClientsAdrRib convert(IContratsAdresse input) {
        MajLiensClientsAdrRib majLiensClientsAdrRib = null;

        if (input != null) {
            majLiensClientsAdrRib = new MajLiensClientsAdrRib();
            DtoListeDossierS22 listeDossierS22 = new DtoListeDossierS22();
            DtoListeAdresses listeAdresse = new DtoListeAdresses();
            IAdresse currentAdresse = input.getAdresse();
            IPersonne currentClient = input.getClient();

            if (currentClient != null && currentAdresse != null) {
                for (Iterator<IConsultContrat> it = input.getListeContrats().iterator(); it.hasNext();) {
                    IConsultContrat consultContrat = it.next();

                    if (consultContrat.isAdresseSelected()) {
                        DtoDossierAdresse dossierAdresse = new DtoDossierAdresse();

                        DtoNumeroContrat numeroContrat = new DtoNumeroContrat();
                        numeroContrat.setIdentifiantContrat(consultContrat.getNumeroContrat());
                        numeroContrat.setCompagnie(consultContrat.getSocieteDuGroupe());
                        numeroContrat.setSystemeOrigine(consultContrat.getSystemeOrigine());
                        dossierAdresse.setNumeroContrat(numeroContrat);

                        dossierAdresse.setIdentifiantClient(currentClient.getNumeroClient());
                        dossierAdresse.setIdentifiantAdresse(currentAdresse.getIdentifiant());

                        listeAdresse.getDossierAdresse().add(dossierAdresse);
                    }
                }
            }

            listeDossierS22.setListeDossierAdresses(listeAdresse);
            majLiensClientsAdrRib.setDtoListeDossierS22(listeDossierS22);

        }

        return majLiensClientsAdrRib;
    }

}
